package staticproxy;

/**
 * @projectName: com.xiayuanxing.designPattern
 * @className: Client
 * @author: xiayuanxing
 * @description: 静态代理
 * @date: 2022/1/3 10:59
 * @version: 1.0
 */
public class Client {


    //静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类
    //静态代理优缺点:
    // 1)优点：在不修改目标对象的功能前提下,能通过代理对象对目标功能扩展
    // 2)缺点：因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类
    // 3)一旦接口增加方法,目标对象与代理对象都要维护



    public static void main(String[] args) {

        //创建目标对象
        TeacherDao teacherDao = new TeacherDao();

        //创建代理对象 同时将目标对象交给代理对象
        TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(teacherDao);

        //通过代理对象调用目标对象的方法
        //即：执行的是代理对象的方法，代理对象再去调用目标对象的方法
        teacherDaoProxy.teach();
    }
}
